In general, a program tends to be used for a long time while being repeatedly maintained. In many cases, program maintenance is performed to change function of a program. In addition, a program is sometimes maintained so as to be adapted to replacement of an environment in which the program is used, wherein the environment is, for example, a hardware that is a platform of the program, an operating system (OS) or a middleware. Moreover, a program is sometimes maintained so as to be adapted to replacement of a programming language describing the program. Thus, such maintenance that is not intended to change function of a program (hereafter, such maintenance is referred to as “conversion”) is sometimes carried out.
When such conversion of a program is required, every sentence of the program needs to be examined whether some change is necessary or not, and subsequently, modification should be applied only to the sentences necessary to be changed. However, there are many systems each of which includes programs whose total sum of sentences is over one million. It is not easy in such a system to correctly carry out the conversion. Moreover, it is not easy to verify whether the conversion is correctly carried out or not. Moreover, not limited to the conversion, and regardless of the size of a system, it is not easy to verify whether a program maintenance is correctly carried out or not.
In order to verify whether a program maintenance is correctly carried out or not, there is a general technique of comparing programs before and after maintenance to find out parts different from each other. For example, Patent Document 1 discloses a program difference detecting apparatus which compares token arrangements generated from respective programs before and after maintenance to find out different parts of the respective programs before and after maintenance. The tokens of Patent Document 1 include reserved words, character constants, etc. According to Patent Document 1, since the program difference detecting apparatus finds out different parts of respective programs with use of the arrangement of such tokens, the program difference detecting apparatus can find out the different parts not based on syntactic difference such as difference in starting column of a sentence but based on semantic difference.